var chart;
var ModoPresentacion = "individual";

var tipomedicion = "0";
var tiporegistro = "0";
var metodogeneracion = "-1";

function ActualizarModoPresentacion()
{
    var modoPresentacion = document.getElementById("modoPresentacion").value;
}

function genDataPrueba()
{    var arreglo2=[];
     var arreglo=document.getElementById("registrosFechaValor").value;
    var arreglo12=arreglo.split(",");

    var tam=arreglo12.length-1;
    var indi=[];
    for(var j=0;j<19;j++){
        var interval= Math.floor(Math.random() * ((tam-2)-2  + 1)) + 2;
        //indi.push(interval);
        var as=arreglo12[interval].split("//");
        var t=as[0].split("/");
        t[1]=999999;
        //arreglo2.push(parseFloat(t[1]));
        var fin="";
        fin=fin.concat(t[0],"/",t[1],"//",as[1]);
        arreglo12[interval]=fin;


    }





   // console.log(arreglo12);

    for(var i = 0; i < arreglo12.length; i++)
    {
        if(arreglo12[i]!=""){
        var temp=arreglo12[i].split("//")[0].split("/")[1];

        arreglo2.push(parseFloat(temp));}
    }
   /*
    for(var j=0;j<19;j++){
        var interval= Math.floor(Math.random() * (tam-1  + 1)) + 1;
        indi.push(interval);
        arreglo2[interval]= NaN;
    }
     */

    //alert(document.getElementsByName('idR').value);


    //$("#tabs-1 input").each(function(){
    //    alert($(this).val());
    //});


    $('#registrosPruebados').attr('value',arreglo12);

    $('#registrosPrueba').attr('value',arreglo2);
    plotear('registrosPruebados','contenedor');
    //arreglo=arreglo.split("//");
      //
}


function ActualizarGrafica(idRegistroTipoMedicion, idRegistroTipoRegistro, idRegistroMetodoGeneracion,
                           idEntradaRegistrosFechaValor, idContenedor)
{
    tipomedicion = document.getElementById(idRegistroTipoMedicion).value;
    tiporegistro = document.getElementById(idRegistroTipoRegistro).value;
    metodogeneracion = document.getElementById(idRegistroMetodoGeneracion).value;

    if(VerificarSeleccionTipos(tipomedicion, tiporegistro, metodogeneracion))
    {
        if(ModoPresentacion == "individual")
        {
            chart.destroy();
            plotear(idEntradaRegistrosFechaValor,idContenedor);
        }
        else
        {
            var serie = ObtenerSeries();
            chart.addSeries(serie[0]);
        }
    }
}

function VerificarSeleccionTipos(tipoMedicion, tipoRegistro, metodoGeneracion)
{
    if(tipoMedicion <= 0)
    {
        alert("Debe seleccionar el Tipo de Medicion");
        return false;
    }

    if(tipoRegistro < 0)
    {
        alert("Debe seleccionar el Tipo de Registro");
        return false;
    }

    if(metodoGeneracion < 0)
    {
        alert("Debe seleccionar el Metodo de Generacion");
        return false;
    }

    return true;
}

function plotear(idEntradaRegistrosFechaValor, idContenedor)
{
    //alert(idEntradaRegistrosFechaValor);
    //console.log(idEntradaRegistrosFechaValor);


    var serie = ObtenerSeries(idEntradaRegistrosFechaValor);
    console.log(serie);
    //alert(serie);
    var chart1 = CrearChart(serie, idContenedor);
};

function CrearChart(serie, idContenedor)
{
    var opciones = CrearOpciones(serie, idContenedor);
    chart = new Highcharts.Chart(opciones);
    return chart;
};

function CrearOpciones(serie, idContenedor)
{
    //alert(serie);
    var opciones = {
        chart: {
            renderTo: idContenedor,
            zoomType: 'x',
            type: 'spline',
            marginRight: 130,
            marginBottom: 25,
            spacingRight: 20
        },
        title: {
            text: 'Registros',
            x: -20 //center
        },
        subtitle: {
            text: document.ontouchstart === undefined ?
                'Haz click y arrastra en el area de ploteo para hacer zoom' :
                'Drag your finger over the plot to zoom in',
            x: -20
        },
        xAxis: {
            type: 'datetime',
            //maxZoom: 10 x 24 x 60 x 60 x 1000, // fourteen days
            maxZoom: 1000,
            title: {
                text: null
            }
        },
        yAxis: {
            title: {
                text: 'Valores'
            },
            plotLines: [{
                value: 0,
                width: 0.5,
                color: '#808080'
            }]
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'top',
            x: -10,
            y: 100,
            borderWidth: 0
        },
        plotOptions:
        {
            spline:{
                lineWidth : 1,
                states:
                {
                  hover: {
                       lineWidth: 3
                  }
                },
                marker: {
                    enable:false

                },

            }

        },
        series: serie
    };

    return opciones;
}

function ObtenerSeries(idEntradaRegistrosFechaValor)
{
    var dataRegistros = ObtenerDataSeries(idEntradaRegistrosFechaValor);
    var series2 = CrearSeries(dataRegistros);
    return series2;
};

function CrearSeries(dataRegistros)
{

   // alert("DATA: "+dataRegistros);
    var anho = 0;

    var j = 0;
    var k = 0;
    var data = [];
    var anhos = [];


    var series = [];
    for(var i = 0; i < dataRegistros.length; i++)
    {
        //dataRegistros[i] = [ [anionumerico, valor], [anio] ]
        if(parseInt(dataRegistros[i][1]) > anho)
        {
            if(anho != 0)
            {
                j++;
            }
            anho = parseInt(dataRegistros[i][1]);
            var dataTmp = [];
            data.push(dataTmp);
            anhos.push(anho);
            k = 0;
        }

        if(parseInt(dataRegistros[i][1]) == anho)
        {   //data[j]=[anionumerico, valor]
            data[j].push(dataRegistros[i][0]);
            k++;
        }
    }

    for(var i = 0; i < data.length; i++)
    {
        var serie = CrearSerie(data[i],anhos[i]);
        series.push(serie);
    }

   // alert(series);

    return series;
}

function CrearSerie(data, nombre)
{
    //TODO falta convertir entero a cadena
    var nombreSerie = "serie anio : " + parseInt(nombre).toString() + "";

    var serie = {
        type: 'spline',
        name: nombreSerie,
        data: data
    };

    return serie;
}

function ObtenerDataSeries(idEntradaRegistrosFechaValor)
{
    var dataRegistros = [];

    var listaRegistros = ExtraerLista(idEntradaRegistrosFechaValor,",");





    for(var i = 0; i < listaRegistros.length; i++)
    {   //OBTIENE ARREGLOS PARSEADOS POR FECHA VALOR
        if(listaRegistros[i] != "")
        {
            //se obtiene valor numero del año y el valor del registro
            //array [valoranio valor]
            var registro = ParsearRegistro(listaRegistros[i]);

            if(registro != null)
            {
                var anhoRegistro = ObtenerAnhoRegistro(listaRegistros[i]);//verificar como se llenan los anoyregistro


                var registroFecha = [];
                registroFecha.push(registro);
                registroFecha.push(anhoRegistro);

                dataRegistros.push(registroFecha);
            }
        }

    }
    //alert(dataRegistros);
    console.log('PROBANDO')
    console.log(dataRegistros);
    return dataRegistros;
}

function ParsearRegistro(registro)
{
    var registroCompleto = [];
    // fecha-hora/valor // tipomedicion:tiporegistro:metodogeneracion
    registroCompleto = registro.split("//");

    //registro: fecha-hora/valor
    var dataRegistro = [];
    dataRegistro = registroCompleto[0].split("/");


    var tipos = [];
    tipos = registroCompleto[1].split(":");


    var registro;
    if(esRegistroValido(tipos))
    {
        var valorNumericoFechaRegistro = ValorNumericoFecha(dataRegistro[0]);
        var valorRegistro = parseFloat(dataRegistro[1]);

        if(valorRegistro == 999999)
        {
            valorRegistro = null;
        }

        registro = [valorNumericoFechaRegistro , valorRegistro];
    }
    else
    {
        registro = null;
    }
    return registro;
}

function genHole(registro)
{
     console.log("sigue en prueba");



}

function esRegistroValido(tipos)
{
    if(tipomedicion != 0 && tiporegistro != 0)
    {
        if(tipos[0] == tipomedicion && tipos[1] == tiporegistro && tipos[2] == metodogeneracion)
        {
            return true;
        }
    }
    else if(tipomedicion != 0 && tiporegistro == 0)
    {
        if(tipos[0] == tipomedicion && tipos[2] == metodogeneracion)
        {
            return true;
        }
    }
    else if(tipomedicion == 0 && tiporegistro != 0)
    {
        if(tipos[1] == tiporegistro && tipos[2] == metodogeneracion)
        {
            return true;
        }
    }
    else
    {
        if(tipos[2] == metodogeneracion)
        {
            return true;
        }
    }
    return false;
}

function ValorNumericoFecha(registroFecha)
{
    var anho = parseInt(registroFecha.substring(0,4));
    var mes;
    if(registroFecha.substring(5,6) == "0")
    {
        mes = parseInt(registroFecha.substring(6,7));
    }
    else
    {
        mes = parseInt(registroFecha.substring(5,7));
    }

    var dia;
    if(registroFecha.substring(8,9) == "0")
    {
        dia = parseInt(registroFecha.substring(9,10));
    }
    else
    {
        dia = parseInt(registroFecha.substring(8,10));
    }


    var hora = parseInt(registroFecha.substring(11,13));
    var minuto = parseInt(registroFecha.substring(14,16));
    var segundo = parseInt(registroFecha.substring(17,19));
    var milisegundo = parseInt(registroFecha.substring(20));

    //var fechaNumero = Date.UTC(anho, mes - 1 , dia, hora, minuto, segundo, milisegundo);

    //se debe utilizar un unico año(bisiesto) para todos los registros, para poder
    //visualizar las series de datos de todos los años en una sola grafica


    var fechaNumero = Date.UTC(2012, mes - 1 , dia, hora, minuto, segundo, milisegundo);
    console.log(fechaNumero);
    return fechaNumero;
}

function ObtenerAnhoRegistro(registro)
{
    var registroCompleto = [];
    // fecha-hora/valor // tipomedicion:tiporegistro:metodogeneracion
    registroCompleto = registro.split("//");

    //registro: fecha-hora/valor
    var dataRegistro = [];
    dataRegistro = registroCompleto[0].split("/");

    var anho = dataRegistro[0].substring(0,4);

    return anho;
}

function ObtenerIdsRegistros(idDescripcionRegistros)
{

    var descripcion = document.getElementById(idDescripcionRegistros).value;
    console.log(descripcion);
    descripcion = descripcion.substring(13, descripcion.length -2);
    document.getElementById(idDescripcionRegistros).value = descripcion;
    var lista = ExtraerLista(idDescripcionRegistros,"],");
    document.getElementById(idDescripcionRegistros).value = lista;
    var lista2 = ExtraerLista(idDescripcionRegistros,", Hidregistro[");

    return lista2;
}

